package ScalaStudy.chapter07

object Test13_SimpleFunction {

  def main(args: Array[String]): Unit = {


    //////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////  简单集合函数  //////////////////////////////////////
    ///////////////////////////////////////////////////////////////////////////////////////////


    val list = List(1,2,3,4,5)
    val list1 = List(("a",1),("b",2),("c",3))

    println("============  1 求和  ============")

    var sum = 0
    for(elem <- list){
      sum += elem
    }
    println(sum)

    println(list.sum)

    println("============  2 乘积  ============")

    println(list.product)

    println("============  3 最大值  ============")

    println(list.max)
    println(list1.maxBy((tuple:(String, Int))=> tuple._2))        //打印出list1元组中第二个元素中的最大值
    println(list1.maxBy(_._2))                                    //上面的简化版

    println("============  4 最小值  ============")

    println(list.min)
    println(list1.minBy(_._2))                                    //打印出list1元组中第二个元素中的最小值

    println("============  5 排序  ============")

    //5.1 sorted

    val list2 = list.sorted                          //将list进行排序，从小到大
    println(list2)

    //从大到小排序

    val list3 = list.sorted(Ordering[Int].reverse)
    println(list3)

    println("============  6 元组排序  ============")

    //sortBy

    val list4 = list1.sortBy(_._2)                //安照第二个字段从小到大排序
    println(list4)

    val list5 = list1.sortBy(_._2).reverse        //安照第二个字段从大到小排序
    println(list5)

    println("============  7 sortWith排序使用  ============")

    //sortWith

    val list6 = list.sortWith((a:Int, b:Int) => {a < b})     //从小到大排序
    val list7 = list.sortWith(_ < _)     //从小到大排序
    val list8 = list.sortWith(_ > _)     //从大到小排序
    println(list6)
    println(list7)
    println(list8)


  }
}
